package com.test07;

public class Test07 {
    public static void main(String[] args) {
        /**
         * 1、声明一个抽象类器官Organ，包含抽象方法：public abstract void doWork();
         * 2、声明一个身体Body类型
         * （1）包含属性：所有者owner(String)，体重weight(double)（单位：克）,健康状态
         * health(boolean)，心脏heart (Organ类型)
         * （2）声明有参构造，get/set，toString()
         * 其中heart属性在有参构造中根据身体状况创建心脏对象
         * （3）声明一个私有的内部类Heart，继承Organ类，内部类包含属性：心率，颜色，大小（单位：
         * 克），重写doWork()方法：打印“为血液流动提供动力，把血液运行至xx的身体各个部分”。
         * ①其中xx是Body的owner所有者。
         * ②其中心脏大小等于体重的0.5％
         * ③其中心脏颜色，如果人健康，心脏为鲜红色，人不健康，心脏为暗红色
         * ④其中心脏心率，如果人健康，心率为：60~100次/分，如果在此范围之外，则人不健康
         * ⑤重写doWork()方法：
         * 打印“心率：xx次/分，大小：xx克，颜色：xx”
         * 打印“为血液流动提供动力，把血液运行至身体各个部分”
         * 3、声明一个医生Doctor类型，声明一个swapHeart(Body b1, Body b2)方法，为两个人换心脏，并交换健康状况
         * 4、在测试类中，创建两个人，并显示信息，并调用心脏的doWork方法，然后创建一个医生对象，调
         * 用swapHeart后，再显示两个人的信息，并调用心脏的doWork方法
         */

        Body b1 = new Body("张飞", 120, true);
        Body b2 = new Body("刘备", 170, false);
        System.out.println(b1);
        System.out.println(b1.getHeart().toString());
        b1.getHeart().doWork();

        System.out.println(b2);
        System.out.println(b2.getHeart().toString());
        b2.getHeart().doWork();

        Doctor doctor = new Doctor();
        doctor.swapHeart(b1, b2);
        System.out.println("------交换心脏以后------");

        System.out.println(b1);
        System.out.println(b1.getHeart().toString());
        b1.getHeart().doWork();

        System.out.println(b2);
        System.out.println(b2.getHeart().toString());
        b2.getHeart().doWork();
    }
}
